{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Polynomial Freeform"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note this is the optimized example in the Optimization section of the example gallery."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "from optiland import optic"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We define a singlet lens, which has a freeform as its first surface.\n",
    "\n",
    "The freeform surface is defined as:\n",
    "\n",
    "$z(x, y) = \\frac{r^2}{R \\cdot (1 + \\sqrt{(1 - (1 + k) \\cdot r^2 / R^2)})} + \\sum\\limits_{i}\\sum\\limits_{j}{C_{i, j} \\cdot x^i \\cdot y^j}$\n",
    "\n",
    "where $x$ and $y$ are the local surface coordinates, $r^2 = x^2 + y^2$, $R$ is the radius of curvature, $k$ is the conic constant and $C_{i, j}$ is the polynomial coefficient for indices $i, j$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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WX2upqYmtLa2xnUd27t3L7RaLWpraxP1V6AUJJfLsXr1auzbty96WzAYxL59+9DU1JTEyigdLFq0CAaDIe7543A48N577/H5k8UEQcDDDz+M3/zmN3jzzTexaNGiuPtXr14NmUwW97xpb29HZ2cnnzcUFQwG4fF4+HzJMFwxogXX2dmJoaEhdHZ2IhAI4MiRIwCAqqoqqNVqbNy4EbW1tfjCF76Af/iHf4DVasUTTzyB7du3Q6FQJLd4WnA7duzAAw88gGuvvRZr1qzB888/j9HRUTz00EPJLo1SwMjICM6ePRv9+MKFCzhy5Ajy8/NRXl6ORx99FP/3//5fVFdXY9GiRXjyySdRWlqKu+++O3lFU1Jt374du3fvxm9/+1toNJroORCdTgelUgmdTocvfelL2LFjB/Lz86HVavHII4+gqakJ119/fZKrp2TYuXMntmzZgvLycjidTuzevRtvv/02XnvtNT5fMk2y2+JR9nnggQcEAJP+vPXWW9FrLl68KGzZskVQKpVCYWGh8PWvf13w+XzJK5qS6kc/+pFQXl4uyOVyYc2aNcKhQ4eSXRKliLfeemvK7ycPPPCAIAihlt1PPvmkUFJSIigUCmHDhg1Ce3t7coumpJrq+QJAePHFF6PXjI2NCX/1V38l5OXlCSqVSvj0pz8tWCyW5BVNSfXFL35RqKioEORyuVBUVCRs2LBBeP3116P38/mSOUSCIAgLH8eIiIiIiIhSB88YERERERFR1mMwIiIiIiKirMdgREREREREWY/BiIiIiIiIsh6DERERERERZT0GIyIiIiIiynoMRkRERERElPUYjIiIiIiIKOsxGBERERERUdZjMCIiIiIioqzHYERERERERFmPwYiIiIiIiLLe/wc0gwgZlRxiCQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lens = optic.Optic()\n",
    "\n",
    "# add surfaces\n",
    "lens.add_surface(index=0, thickness=np.inf)\n",
    "\n",
    "# define coefficients in 3x3 matrix\n",
    "coefficients = np.array(\n",
    "    [\n",
    "        [-4.56505091e-06, -1.15752084e-01, 1.40048185e-02],\n",
    "        [-7.70890849e-09, 1.59140219e-07, -7.31428964e-09],\n",
    "        [1.39404472e-02, -1.41760901e-05, 9.63852768e-07],\n",
    "    ],\n",
    ")\n",
    "lens.add_surface(\n",
    "    index=1,\n",
    "    radius=100,\n",
    "    thickness=5,\n",
    "    surface_type=\"polynomial\",  # <-- surface_type='polynomial'\n",
    "    is_stop=True,\n",
    "    material=\"SF11\",\n",
    "    coefficients=coefficients,\n",
    ")\n",
    "\n",
    "lens.add_surface(index=2, thickness=30, radius=-1000)\n",
    "lens.add_surface(index=3)\n",
    "\n",
    "# set aperture\n",
    "lens.set_aperture(aperture_type=\"EPD\", value=15)\n",
    "\n",
    "# add field\n",
    "lens.set_field_type(field_type=\"angle\")\n",
    "lens.add_field(y=0)\n",
    "\n",
    "# add wavelength\n",
    "lens.add_wavelength(value=0.55, is_primary=True)\n",
    "\n",
    "# draw lens\n",
    "lens.draw(num_rays=5)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
